package com.gzx.plugin.tjzy.modular.gzxcase.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.gzx.plugin.tjzy.modular.gzxcase.dto.GzxAllocateCaseDto;
import com.gzx.plugin.tjzy.modular.gzxcase.entity.CaseQueryParam;
import com.gzx.plugin.tjzy.modular.gzxcase.entity.GzxCase;
import com.gzx.plugin.tjzy.modular.gzxcase.entity.GzxCaseDetail;
import com.gzx.plugin.tjzy.modular.gzxcase.vo.GzxCaseDetailVo;
import com.gzx.plugin.tjzy.modular.gzxcase.vo.GzxCaseVo;

import java.util.List;

/**
 * @author zjt
 * @description
 * @since 2024/12/3 14:14
 */
public interface GzxCaseDbService {

    /**
     * 案件分页查询
     *
     * @param page               分页参数
     * @param lambdaQueryWrapper 查询条件
     * @return
     */
    Page<GzxCaseVo> pageList(Page page, LambdaQueryWrapper<GzxCase> lambdaQueryWrapper);

    /**
     * 案件详情分页查询
     *
     * @param page               分页参数
     * @param lambdaQueryWrapper 查询条件
     * @return
     */
    Page<GzxCaseDetailVo> pageListDetail(Page page, LambdaQueryWrapper<GzxCaseDetail> lambdaQueryWrapper);


    /**
     * 查询案件ID和甲方系统主键
     *
     * @param caseQueryParamList
     * @return
     */
    List<GzxCase> listCasesByBatchAndDebtorIds(List<CaseQueryParam> caseQueryParamList);

    /**
     * 查询案件
     *
     * @param lambdaQueryWrapper
     * @return
     */
    GzxCase selectCase(LambdaQueryWrapper<GzxCase> lambdaQueryWrapper);

    /**
     * 查询案件
     *
     * @param lambdaQueryWrapper
     * @return
     */
    GzxCaseVo selectCaseVo(LambdaQueryWrapper<GzxCase> lambdaQueryWrapper);

    /**
     * 查询案件
     *
     * @param lambdaQueryWrapper
     * @return
     */
    List<GzxCase> selectCaseList(LambdaQueryWrapper<GzxCase> lambdaQueryWrapper);

    /**
     * 查询案件
     *
     * @param lambdaQueryWrapper
     * @return
     */
    List<GzxCaseVo> selectVoCaseList(LambdaQueryWrapper<GzxCase> lambdaQueryWrapper);

    /**
     * 查询案件详情
     *
     * @param lambdaQueryWrapper
     * @return
     */
    List<GzxCaseDetail> selectCaseDetailList(LambdaQueryWrapper<GzxCaseDetail> lambdaQueryWrapper);

    /**
     * 案件修改
     *
     * @param lambdaUpdateWrapper
     */
    void update(LambdaUpdateWrapper<GzxCase> lambdaUpdateWrapper);

    /**
     * 根据ID修改案件
     *
     * @param gzxCase
     */
    void updateById(GzxCase gzxCase);

    /**
     * 批量保存案件
     *
     * @param caseList
     */
    void saveBatch(List<GzxCase> caseList);

    /**
     * 批量保存案件明细
     *
     * @param caseDetailList
     */
    void saveBatchDetail(List<GzxCaseDetail> caseDetailList);

    /**
     * 分案修改案件主表数据
     *
     * @param allocateCaseDto
     */
    void allocateCase(GzxAllocateCaseDto allocateCaseDto);
}
